package com.css.zfzx.sjcj.modules.yhlevel.service.impl;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.css.zfzx.sjcj.common.utils.UpdateUtil;
import com.css.zfzx.sjcj.modules.yhlevel.repository.YhDisasterHiddenLevelNativeRepository;
import com.css.zfzx.sjcj.modules.yhlevel.repository.YhDisasterHiddenLevelRepository;
import com.css.zfzx.sjcj.modules.yhlevel.repository.entity.YhDisasterHiddenLevelEntity;
import com.css.zfzx.sjcj.modules.yhlevel.service.YhDisasterHiddenLevelService;
import com.css.zfzx.sjcj.modules.yhlevel.viewobjects.YhDisasterHiddenLevelQueryParams;
import com.css.bpm.platform.utils.*;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * @author andy
 * @date 2021-02-03
 */
@Service
public class YhDisasterHiddenLevelServiceImpl implements YhDisasterHiddenLevelService {

	@Autowired
    private YhDisasterHiddenLevelRepository yhDisasterHiddenLevelRepository;
    @Autowired
    private YhDisasterHiddenLevelNativeRepository yhDisasterHiddenLevelNativeRepository;

    @Override
    public JSONObject queryYhDisasterHiddenLevels(YhDisasterHiddenLevelQueryParams queryParams, int curPage, int pageSize) {
        Page<YhDisasterHiddenLevelEntity> yhDisasterHiddenLevelPage = this.yhDisasterHiddenLevelNativeRepository.queryYhDisasterHiddenLevels(queryParams, curPage, pageSize);
        JSONObject jsonObject = PlatformPageUtils.formatPageData(yhDisasterHiddenLevelPage);
        return jsonObject;
    }


    @Override
    public YhDisasterHiddenLevelEntity getYhDisasterHiddenLevel(String id) {
        YhDisasterHiddenLevelEntity yhDisasterHiddenLevel = this.yhDisasterHiddenLevelRepository.findById(id).orElse(null);
         return yhDisasterHiddenLevel;
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
    public YhDisasterHiddenLevelEntity saveYhDisasterHiddenLevel(YhDisasterHiddenLevelEntity yhDisasterHiddenLevel) {
        String uuid = UUIDGenerator.getUUID();
        yhDisasterHiddenLevel.setUuid(uuid);
        yhDisasterHiddenLevel.setCreateUser(PlatformSessionUtils.getUserId());
        yhDisasterHiddenLevel.setCreateTime(PlatformDateUtils.getCurrentTimestamp());
        this.yhDisasterHiddenLevelRepository.save(yhDisasterHiddenLevel);
        return yhDisasterHiddenLevel;
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
    public YhDisasterHiddenLevelEntity updateYhDisasterHiddenLevel(YhDisasterHiddenLevelEntity yhDisasterHiddenLevel) {
        YhDisasterHiddenLevelEntity yhDisasterHiddenLevelEntity = yhDisasterHiddenLevelRepository.findById(yhDisasterHiddenLevel.getUuid()).get();
        UpdateUtil.copyNullProperties(yhDisasterHiddenLevelEntity,yhDisasterHiddenLevel);
        yhDisasterHiddenLevel.setUpdateUser(PlatformSessionUtils.getUserId());
        yhDisasterHiddenLevel.setUpdateTime(PlatformDateUtils.getCurrentTimestamp());
        this.yhDisasterHiddenLevelRepository.save(yhDisasterHiddenLevel);
        return yhDisasterHiddenLevel;
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
    public void deleteYhDisasterHiddenLevels(List<String> ids) {
        List<YhDisasterHiddenLevelEntity> yhDisasterHiddenLevelList = this.yhDisasterHiddenLevelRepository.findAllById(ids);
        if(!PlatformObjectUtils.isEmpty(yhDisasterHiddenLevelList) && yhDisasterHiddenLevelList.size() > 0) {
            for(YhDisasterHiddenLevelEntity yhDisasterHiddenLevel : yhDisasterHiddenLevelList) {
                this.yhDisasterHiddenLevelRepository.delete(yhDisasterHiddenLevel);
            }
        }
    }


}
